import { IPSDELogicNode } from './ipsdelogic-node';
import { IPSDELogicParam } from './ipsdelogic-param';
import { IPSSubSysServiceAPI } from '../../service/ipssub-sys-service-api';
import { IPSSubSysServiceAPIDE } from '../../service/ipssub-sys-service-apide';
import { IPSSubSysServiceAPIDEMethod } from '../../service/ipssub-sys-service-apidemethod';

/**
 *
 * 继承父接口类型值[SUBSYSSAMETHOD]
 * @export
 * @interface IPSDESubSysSAMethodLogic
 */
export interface IPSDESubSysSAMethodLogic extends IPSDELogicNode {
  /**
   * 目标逻辑参数对象
   *
   * @type {IPSDELogicParam}
   */
  getDstPSDELogicParam(): IPSDELogicParam | null;

  /**
   * 目标逻辑参数对象
   *
   * @type {IPSDELogicParam}
   */
  get dstPSDELogicParam(): IPSDELogicParam | null;

  /**
   * 目标逻辑参数对象（必须存在）
   *
   * @type {IPSDELogicParam}
   */
  getDstPSDELogicParamMust(): IPSDELogicParam;

  /**
   * 外部服务接口
   *
   * @type {IPSSubSysServiceAPI}
   */
  getPSSubSysServiceAPI(): IPSSubSysServiceAPI | null;

  /**
   * 外部服务接口
   *
   * @type {IPSSubSysServiceAPI}
   */
  get psSubSysServiceAPI(): IPSSubSysServiceAPI | null;

  /**
   * 外部服务接口（必须存在）
   *
   * @type {IPSSubSysServiceAPI}
   */
  getPSSubSysServiceAPIMust(): IPSSubSysServiceAPI;

  /**
   * 外部服务接口实体
   *
   * @type {IPSSubSysServiceAPIDE}
   */
  getPSSubSysServiceAPIDE(): IPSSubSysServiceAPIDE | null;

  /**
   * 外部服务接口实体
   *
   * @type {IPSSubSysServiceAPIDE}
   */
  get psSubSysServiceAPIDE(): IPSSubSysServiceAPIDE | null;

  /**
   * 外部服务接口实体（必须存在）
   *
   * @type {IPSSubSysServiceAPIDE}
   */
  getPSSubSysServiceAPIDEMust(): IPSSubSysServiceAPIDE;

  /**
   * 外部服务接口方法
   *
   * @type {IPSSubSysServiceAPIDEMethod}
   */
  getPSSubSysServiceAPIDEMethod(): IPSSubSysServiceAPIDEMethod | null;

  /**
   * 外部服务接口方法
   *
   * @type {IPSSubSysServiceAPIDEMethod}
   */
  get psSubSysServiceAPIDEMethod(): IPSSubSysServiceAPIDEMethod | null;

  /**
   * 外部服务接口方法（必须存在）
   *
   * @type {IPSSubSysServiceAPIDEMethod}
   */
  getPSSubSysServiceAPIDEMethodMust(): IPSSubSysServiceAPIDEMethod;

  /**
   * 返回值绑定逻辑参数对象
   *
   * @type {IPSDELogicParam}
   */
  getRetPSDELogicParam(): IPSDELogicParam | null;

  /**
   * 返回值绑定逻辑参数对象
   *
   * @type {IPSDELogicParam}
   */
  get retPSDELogicParam(): IPSDELogicParam | null;

  /**
   * 返回值绑定逻辑参数对象（必须存在）
   *
   * @type {IPSDELogicParam}
   */
  getRetPSDELogicParamMust(): IPSDELogicParam;
}
